﻿using System;
using System.Data;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using BUS;
using DTO;

namespace QuanLyHocSinh.GUI
{
    public partial class F_ChuyenLop : DevExpress.XtraEditors.XtraUserControl
    {
        public F_ChuyenLop()
        {
            InitializeComponent();
        }
        private int trangthaicu = 0;
        private int trangthaimoi = 0;
        private void LoadCacLookUpEdit()
        {
            DataTable dulieulookup = new DataTable();

            dulieulookup = BUSChuyenLop.LietKeKhoiLop();
            this.lkKhoiLopCu.Properties.DataSource = dulieulookup;
            this.lkKhoiLopCu.Properties.DisplayMember = "TENKHOILOP";
            this.lkKhoiLopCu.Properties.ValueMember = "MAKHOILOP";
            this.lkKhoiLopCu.Properties.ShowHeader = false;
            this.lkKhoiLopCu.Properties.ShowFooter = false;
            this.lkKhoiLopCu.Properties.ImmediatePopup = false;
            this.lkKhoiLopCu.Properties.SearchMode = SearchMode.AutoComplete;

            this.lkKhoiLopMoi.Properties.DataSource = dulieulookup;
            this.lkKhoiLopMoi.Properties.DisplayMember = "TENKHOILOP";
            this.lkKhoiLopMoi.Properties.ValueMember = "MAKHOILOP";
            this.lkKhoiLopMoi.Properties.ShowHeader = false;
            this.lkKhoiLopMoi.Properties.ShowFooter = false;
            this.lkKhoiLopMoi.Properties.ImmediatePopup = false;
            this.lkKhoiLopMoi.Properties.SearchMode = SearchMode.AutoComplete;
        }

        private void lkKhoiLopCu_EditValueChanged(object sender, EventArgs e)
        {
            this.lkLopCu.EditValue = null;
            DataTable dulieulookup = new DataTable();
            dulieulookup = BUSChuyenLop.LietKeLop(lkKhoiLopCu.EditValue);
            this.lkLopCu.Properties.DataSource = dulieulookup;
            this.lkLopCu.Properties.DisplayMember = "TENLOP";
            this.lkLopCu.Properties.ValueMember = "MALOP";
            this.lkLopCu.Properties.ShowHeader = false;
            this.lkLopCu.Properties.ShowFooter = false;
            this.lkLopCu.Properties.ImmediatePopup = false;
            this.lkLopCu.Properties.SearchMode = SearchMode.AutoComplete;
        }

        private void lkKhoiLopMoi_EditValueChanged(object sender, EventArgs e)
        {
            this.lkLopMoi.EditValue = null;
            DataTable dulieulookup = new DataTable();
            dulieulookup = BUSChuyenLop.LietKeLop(lkKhoiLopMoi.EditValue);
            this.lkLopMoi.Properties.DataSource = dulieulookup;
            this.lkLopMoi.Properties.DisplayMember = "TENLOP";
            this.lkLopMoi.Properties.ValueMember = "MALOP";
            this.lkLopMoi.Properties.ShowHeader = false;
            this.lkLopMoi.Properties.ShowFooter = false;
            this.lkLopMoi.Properties.ImmediatePopup = false;
            this.lkLopMoi.Properties.SearchMode = SearchMode.AutoComplete;
        }

        private void cmdThucHienCu_Click(object sender, EventArgs e)
        {
            if (trangthaicu == 0)
            {
                if (lkLopCu.EditValue != "" && lkLopCu.EditValue != null)
                {
                    DTOHocSinh hocsinh = new DTOHocSinh();
                    hocsinh.MaLop = lkLopCu.EditValue.ToString();
                    this.dgvHocSinhCu.DataSource = BUSChuyenLop.DanhSachHocSinh(hocsinh);
                }
                else
                {
                    XtraMessageBox.Show("Vui lòng chọn lớp!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                 XtraMessageBox.Show("Vui Lòng Hoàn Tất Chức Năng Đang Thực Hiện!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void F_ChuyenLop_Load(object sender, EventArgs e)
        {
            LoadCacLookUpEdit();
        }

        private void cmdThucHienMoi_Click(object sender, EventArgs e)
        {
            if (trangthaimoi == 0)
            {
                if (lkLopMoi.EditValue != "" && lkLopMoi.EditValue != null)
                {
                    DTOHocSinh hocsinh = new DTOHocSinh();
                    hocsinh.MaLop = lkLopMoi.EditValue.ToString();
                    this.dgvHocSinhMoi.DataSource = BUSChuyenLop.DanhSachHocSinh(hocsinh);
                }
                else
                {
                    XtraMessageBox.Show("Vui lòng chọn lớp!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                XtraMessageBox.Show("Vui Lòng Hoàn Tất Chức Năng Đang Thực Hiện!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void cmdQuaPhai_Click(object sender, EventArgs e)
        {
            trangthaicu = 1;
            DataTable Dtbhs = (DataTable)dgvHocSinhCu.DataSource;
            DataRow[] Dtrhs = Dtbhs.Select("IsCheck = 'True'");
            DTOHocSinh hocsinh = new DTOHocSinh();
            int ketqua = 0;
            string TenHocSinh = "";
            try
            {
                if (Dtrhs.Length > 0)
                {
                    if (lkLopCu.EditValue != lkLopMoi.EditValue)
                    {
                        if (BUSPhanLop.KiemTraSiSoTrong(Dtrhs.Length, lkLopMoi.EditValue.ToString()))
                        {
                            foreach (DataRow row in Dtrhs)
                            {
                                hocsinh.MaHS = row[0].ToString();
                                hocsinh.MaLop = lkLopMoi.EditValue.ToString();
                                ketqua = BUSChuyenLop.ChuyenLop(hocsinh);
                                TenHocSinh += row[1].ToString() + ", ";
                            }
                            LoadDuLieu();
                            XtraMessageBox.Show(string.Format("Đã chuyển (các) học sinh : {0} vào lớp : {1} thành công!", TenHocSinh.Substring(0, TenHocSinh.Length - 2), lkLopMoi.Text), "Kết Quả", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            trangthaicu = 0;
                        }
                        else
                        {
                            XtraMessageBox.Show("Thông tin hai lớp cần chuyển không được giống nhau!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    else
                    {
                        XtraMessageBox.Show(string.Format("Số lượng học sinh của lớp {0} đã vượt sỉ số tối đa!", lkLopMoi.Text), "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    XtraMessageBox.Show("Vui lòng chọn 1 học sinh trước khi phân lớp!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void LoadDuLieu()
        {
            DTOHocSinh hocsinh = new DTOHocSinh();
            hocsinh.MaLop = lkLopMoi.EditValue.ToString();
            this.dgvHocSinhMoi.DataSource = BUSChuyenLop.DanhSachHocSinh(hocsinh);
            hocsinh.MaLop = lkLopCu.EditValue.ToString();
            this.dgvHocSinhCu.DataSource = BUSChuyenLop.DanhSachHocSinh(hocsinh);
        }

        private void cmdQuaTrai_Click(object sender, EventArgs e)
        {
            trangthaimoi = 1;
            DataTable Dtbhs = (DataTable)dgvHocSinhMoi.DataSource;
            DataRow[] Dtrhs = Dtbhs.Select("IsCheck = 'True'");
            DTOHocSinh hocsinh = new DTOHocSinh();
            int ketqua = 0;
            string TenHocSinh = "";
            try
            {
                if (Dtrhs.Length > 0)
                {
                    if (lkLopCu.EditValue != lkLopMoi.EditValue)
                    {
                        if (BUSPhanLop.KiemTraSiSoTrong(Dtrhs.Length, lkLopCu.EditValue.ToString()))
                        {
                            foreach (DataRow row in Dtrhs)
                            {
                                hocsinh.MaHS = row[0].ToString();
                                hocsinh.MaLop = lkLopCu.EditValue.ToString();
                                ketqua = BUSChuyenLop.ChuyenLop(hocsinh);
                                TenHocSinh += row[1].ToString() + ", ";
                            }
                            LoadDuLieu();
                            XtraMessageBox.Show(string.Format("Đã chuyển (các) học sinh : {0} vào lớp : {1} thành công!", TenHocSinh.Substring(0, TenHocSinh.Length - 2), lkLopCu.Text), "Kết Quả", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            trangthaimoi = 0;
                        }
                        else
                        {
                            XtraMessageBox.Show("Thông tin hai lớp cần chuyển không được giống nhau!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    else
                    {
                        XtraMessageBox.Show(string.Format("Số lượng học sinh của lớp {0} đã vượt sỉ số tối đa!", lkLopMoi.Text), "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    XtraMessageBox.Show("Vui lòng chọn 1 học sinh trước khi phân lớp!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
